1. Field of the Invention
This invention generally relates to electronic read buffers and methods, and, more specifically, relates to a look ahead read buffer which dynamically detects and changes the direction of prefetching to the buffer depending on the direction in which the data is read from the memory.
2. Description of the Related Art
Read buffers have become common in a variety of different applications to provide temporary storage between a memory device and a host device which reads data from the memory device. In recent times read buffers have been modified to look ahead and prefetch the needed data before it is required by the Host device. The memory device is typically relatively large, with an access time that typically requires the Host device to insert one or more wait states in each memory read cycle. The look ahead read buffer, which is small relative to the memory device, typically has an access time fast enough to allow the Host device to access its data without inserting wait states. This allows the look ahead read buffer to prefetch data from memory and to provide this data to the Host device without delay caused by wait states.
Look ahead read buffers generally have either a fixed or a programmable look ahead direction. Software applications may store and retrieve data in memory in different locations or directions, since the memory is generally provided for the Host device to use at its discretion. Thus each software application program stores and retrieves data as it sees fit, following no general trend or standard. In the case of a fixed-direction look ahead read buffer, if the data is stored in memory in a direction opposite to the fixed direction of the buffer, the look ahead read buffer cannot prefetch this data since it is stored in the wrong direction, and the look ahead read buffer becomes useless. If the look ahead read buffer has a programmable direction, the application software must set the direction to tell the look ahead read buffer in which direction to prefetch the data. Thus the programmable variety only works with application software that has appropriate software drivers to set the direction, which is not normally provided with standard software application programs. Neither the fixed direction nor the programmable direction look ahead read buffers provide a performance boost for standard software application programs that store data in memory in different directions.
Therefore, there existed a need to provide a look ahead read buffer that can read data in both the forward and backward directions, which dynamically changes the direction of the read buffer as required without the software having to know of the existence or configuration of the look ahead read buffer. This dynamic direction look ahead read buffer would thus be transparent to the application program, and would give a great performance boost to any application program, regardless of whether the data is stored in an ascending or a descending order.